import serial
import time
import sys

# 宏定义/常量配置区域
SERIAL_PORT = "/dev/ttyCH9344USB2"
BAUD_RATE = 115200
TIMEOUT = 1  # 读取超时时间（秒）
SEND_DATA = "222"  # 要发送的数据
SEND_INTERVAL = 1  # 发送间隔（秒）
READ_WAIT = 0.1  # 发送后等待数据返回的时间（秒）

def main():
    try:
        # 打开串口
        with serial.Serial(SERIAL_PORT, BAUD_RATE, timeout=TIMEOUT) as ser:
            print(f"已打开串口: {SERIAL_PORT}, 波特率: {BAUD_RATE}")
            print("按Ctrl+C停止程序")
            
            while True:
                # 清空输入缓冲区
                ser.reset_input_buffer()
                
                print(f"发送数据: {SEND_DATA}")
                
                # 发送数据
                ser.write(SEND_DATA.encode('utf-8'))
                ser.flush()  # 等待所有数据写出
                
                # 等待一段时间让数据返回
                time.sleep(READ_WAIT)
                
                # 读取返回数据
                received_data = ser.read_all()
                
                if received_data:
                    print(f"接收到的数据: {received_data.decode('utf-8')}")
                else:
                    print("未接收到任何数据")
                
                print("-" * 30)
                time.sleep(SEND_INTERVAL)  # 等待后进行下一次发送
                
    except serial.SerialException as e:
        print(f"串口错误: {e}")
        sys.exit(1)
    except KeyboardInterrupt:
        print("\n程序被用户中断")
    except Exception as e:
        print(f"发生错误: {e}")
        sys.exit(1)

if __name__ == "__main__":
    main()